Field
The disclosed embodiments relate to techniques for improving how software program images are generated. More specifically, the disclosed embodiments relate to techniques for customizing the process of deploying a software program to a target software environment.
Related Art
The steps for creating a program that targets a particular software environment generally include (1) writing source code in a programming language, (2) compiling the source code, and (3) linking the results of the compilation to generate a distribution that is able to execute in the target software environment. In some cases, a compiler may apply optimizations to the source code prior to the creation of the distribution.
However, the compiler may only apply function-wide or block-wide optimizations to the source code. Because there may be many independent units of compilation, the compiler may not have a view of all the pieces that will eventually make up the distribution. Without closed-world knowledge of the program, the compiler cannot apply certain whole-program optimizations without risk of breaking the source code. This may result in a distribution with a larger footprint and/or a slower execution. Additionally, the developer of the program or a user of the program may possess insights into the program that, but for their inability to control certain parts of the linking process, would enable them to provide optimizations that would improve the source code. Hence, what is needed is a system that enables one to customize the process of deploying a program to a target software environment.